package com.been.common.util;

/**
 * 字符串处理类
 * 
 * @author been 2011-09-19
 */
public class StringUtil {

	/** 空字符串 */
	private static final String EMPTY_STRING = "";

	/** NULL字符串 */
	private static final String NULL_STRING = "null";

	/** 半角逗号 字符 */
	private static final String COMMA_STRING = ",";

	/**
	 * 判断字符串不去空格是否为空
	 * 
	 * @param string
	 *            传进来验证的参数
	 * @return boolean 返回的值
	 */
	public static boolean isNull(String string) {
		// 判断是否为空 或 为空字符串 或 字符串的长度为 0
		if (string == null || EMPTY_STRING.equals(string)
				|| string.length() == 0 || NULL_STRING.equals(string)) {
			return true;
		}
		return false;
	}

	/**
	 * 去掉空格后判断是否为空
	 * 
	 * @param string
	 *            传进来验证的参数
	 * @return boolean 返回的值
	 */
	public static boolean isTrimEmpty(String string) {
		string = string.trim();
		return isNull(string);
	}

	/**
	 * 根据传进来的length长度得到该长度的空字符串
	 * 
	 * @param length
	 *            生成空字符串的长度
	 * @return String 返回的空字符串
	 */
	public static String getEmptyString(int length) {
		if (length < 1) {
			return "";
		}
		StringBuffer sbStr = new StringBuffer();
		for (int i = 0; i < length; i++) {
			sbStr.append(" ");
		}
		return sbStr.toString();
	}

	/**
	 * 得到 数字对应的ascii 字符（中文字符不行）
	 * 
	 * @param digit
	 *            字符对应的数字
	 * @return String
	 */
	public static String getAsciiString(int digit) {
		byte ret[] = new byte[1];
		ret[0] = (byte) digit;
		return new String(ret);
	}

	/**
	 * 得到 字符对应的ascii 数字（中文字符不行）
	 * 
	 * @param digit
	 *            数字对应的字符
	 * @return String
	 */
	public static int getAsciiNum(String s) {
		if (s.length() < 1) {
			return 0;
		}
		byte b = s.getBytes()[0];
		return b;
	}

	/**
	 * 替换文本所有的中文字符“，”
	 * 
	 * @param text
	 *            需要替换的文本
	 * @return String 返回替换后的文本
	 */
	public static String replaceComma(String text) {
		return replaceText(text, "，", COMMA_STRING);
	}

	/**
	 * 替换文本的换行，将\n转换为<br>
	 * 
	 * @param text
	 *            需要替换的文本
	 * @return 返回替换后的文本
	 */
	public static String replaceBr(String text) {
		return replaceText(text, "\n", "<BR>");
	}

	/**
	 * 替换文本
	 * 
	 * @param text
	 *            需要替换的文本
	 * @param repBeforeStr
	 *            需要替换的字符
	 * @param repAfterStr
	 *            替换后的字符
	 * @return String 返回替换后的文本
	 */
	public static String replaceText(String text, String repBeforeStr,
			String repAfterStr) {
		if (text != null) {
			text = text.replaceAll(repBeforeStr, repAfterStr);
		}
		return text;
	}

	/**
	 * 将 字符转换成 boolean
	 * 
	 * @param param
	 *            需要转换的参数
	 * @return boolean value 当参数已 1,Y,T,y,t则返回true
	 */
	public static boolean parseBoolean(String param) {
		if (isTrimEmpty(param)) {
			return false;
		}
		switch (param.charAt(0)) {
		case '1':
		case 'Y':
		case 'T':
		case 'y':
		case 't':
			return true;
		}
		return false;
	}

	/**
	 * 将字符串数组转换为字符串。当数组为时，返回空字符串；当字符数组为null时，返回null。
	 * 
	 * @param strArray 需要转换的字符串数组
	 * @return String 返回字符串
	 */
	public static String strArrayToString(String[] strArray) {
		if (strArray == null) {
			return null;
		}
		int length = strArray.length;
		if (length < 1) {
			return EMPTY_STRING;
		}
		StringBuffer sbStr = new StringBuffer();
		for (int i = 0; i < length; i++) {
			sbStr.append(strArray[i]).append(COMMA_STRING);
		}
		sbStr = sbStr.deleteCharAt(sbStr.length() - 1);
		return sbStr.toString();
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println(isNull(" null "));
		System.out.println(isTrimEmpty(""));
		System.out.println(parseBoolean("Yes"));
		System.out.println(getAsciiString(45));
		System.out.println(getAsciiNum("艹"));
		System.out.println(strArrayToString(new String[]{"sssssss","aaaaaaaaaaaa"}));

	}

}
